home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vgraph.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-06  |  19.6 KB  |  424 lines

  1. /*  Vgraph.h
  2.  
  3.   graphics functions for all floating-point and integer vector types
  4.  
  5.   Copyright (c) 1996-1999 by Martin Sander
  6.   All Rights Reserved.
  7. */
  8.  
  9. #ifndef __VGRAPH_H
  10. #define __VGRAPH_H
  11. #if !defined( __VECLIB_H )
  12.    #include <VecLib.h>
  13. #endif
  14.  
  15. #if defined _WINDOWS || defined _Windows
  16.     #if defined _MSC_VER || defined __BORLANDC__
  17.          /* <windows.h> or the MFC, OWL, OCF files must be included before <VGraph.h> ! */
  18.     #else /* that means: Optima++ */
  19.         #include <WCanvas.hpp>
  20.         #include <WColor.hpp>
  21.         #define COLORREF WColor
  22.     #endif
  23. #else
  24.   #if defined( __WINDOWS_H )
  25.      #error <windows.h> must not be included, if program will run under DOS!
  26.   #endif
  27.   #include <graphics.h>
  28.   #define COLORREF unsigned   /* in <windows.h> defined as DWORD! */
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35.  
  36. /********************  Plot-Routines **************************/
  37.  
  38. #if defined _WINDOWS || defined _Windows
  39.     #if defined __BORLANDC__ || defined _MSC_VER
  40.         void  __vf  V_initPlot( HWND vhwnd, HDC vdc );
  41.         void  __vf  V_initPrint( HDC vprintdc );
  42.     #else  /* Optima++ */
  43.         void  __vf  V_initPlot( WCanvas _VFAR *vcanv );
  44.         void  __vf  V_initPrint( WPrinterCanvas _VFAR *vcanvas );
  45.     #endif
  46. #else   /*  DOS: use Borland's BGI   */
  47.         void  __vf  V_initGraph( char _VFAR *pathtodriver );
  48.         void  __vf  V_initPlot( int graphmode );
  49. #endif
  50. void  __vf  V_setPlotRegion( int left, int top, int right, int bottom );
  51. void  __vf  V_setSymbolSize( float symsize );
  52. void  __vf  V_setLineThickness( unsigned thickness );
  53. int   __vf  V_findAxisRange( extended _VFAR *LoX, extended _VFAR *HiX,
  54.                              extended Xmin, extended Xmax );
  55. void  __vf  V_findAxes( extended Xmin, extended Xmax,
  56.                         extended Ymin, extended Ymax );
  57. void  __vf  V_drawAxes( extended Xmin, extended Xmax,
  58.                         extended Ymin, extended Ymax );
  59. void  __vf  V_continuePlot( void );
  60.  
  61. #ifdef __BORLANDC__
  62.     #pragma option -a-
  63. #else /* Visual C++ */
  64.     #pragma pack( push,1 )
  65. #endif /* avoid insertion of dummy bytes  */
  66. typedef struct {
  67.       int         left, top, right, bottom,
  68.                   outleft, outtop, outright, outbottom,
  69.                   nPixx, nPixy,
  70.                   xclipu, xclipl, yclipu, yclipl,
  71.                   cs, cl, cdot;
  72.       unsigned    linethickness, symlinethickness, DangerOver;
  73.       float       symbolsize, x_scale, y_scale;
  74.       extended    x_max, x_min, x_range, x_maxoverrange,
  75.                   y_max, y_min, y_range, y_maxoverrange;
  76.       } VCOORDSYSTEM;
  77. #ifdef __BORLANDC__
  78.        #pragma option -a.
  79. #else /* Visual C++ */
  80.        #pragma pack( pop )
  81. #endif    /* restore default data packing  */
  82.  
  83. void  __vf  V_setCoordSystem( VCOORDSYSTEM _VFAR *xcs );
  84. void  __vf  V_getCoordSystem( VCOORDSYSTEM _VFAR *xcs );
  85.  
  86. void  __vf  VF_xyAutoPlot(  fVector X, fVector Y, ui size,
  87.                             unsigned form, COLORREF color );
  88. void  __vf  VF_xy2AutoPlot( fVector X1, fVector Y1, ui size1,
  89.                             unsigned form1, COLORREF color1,
  90.                             fVector X2, fVector Y2, ui size2,
  91.                             unsigned form2, COLORREF color2 );
  92. void  __vf  VF_xyDataPlot(  fVector X, fVector Y, ui size,
  93.                             unsigned form, COLORREF color );
  94. void  __vf  VF_yAutoPlot(   fVector Y, ui size,
  95.                             unsigned form, COLORREF color );
  96. void  __vf  VF_y2AutoPlot(  fVector Y1, ui size1,
  97.                             unsigned form1, COLORREF color1,
  98.                             fVector Y2, ui size2,
  99.                             unsigned form2, COLORREF color2 );
  100. void  __vf  VF_yDataPlot(   fVector Y, ui size,
  101.                             unsigned form, COLORREF color );
  102. void  __vf  VCF_autoPlot(   cfVector X, ui size,
  103.                             unsigned form, COLORREF color );
  104. void  __vf  VCF_2AutoPlot(  cfVector X1, ui size1,
  105.                             unsigned form1, COLORREF color1,
  106.                             cfVector X2, ui size2,
  107.                             unsigned form2, COLORREF color2 );
  108. void  __vf  VCF_dataPlot(   cfVector X, ui size,
  109.                             unsigned form, COLORREF color );
  110.  
  111. void  __vf  VD_xyAutoPlot(  dVector X, dVector Y, ui size,
  112.                             unsigned form, COLORREF color );
  113. void  __vf  VD_xy2AutoPlot( dVector X1, dVector Y1, ui size1,
  114.                             unsigned form1, COLORREF color1,
  115.                             dVector X2, dVector Y2, ui size2,
  116.                             unsigned form2, COLORREF color2 );
  117. void  __vf  VD_xyDataPlot(  dVector X, dVector Y, ui size,
  118.                             unsigned form, COLORREF color );
  119. void  __vf  VD_yAutoPlot(   dVector Y, ui size,
  120.                             unsigned form, COLORREF color );
  121. void  __vf  VD_y2AutoPlot(  dVector Y1, ui size1,
  122.                             unsigned form1, COLORREF color1,
  123.                             dVector Y2, ui size2,
  124.                             unsigned form2, COLORREF color2 );
  125. void  __vf  VD_yDataPlot(   dVector Y, ui size,
  126.                             unsigned form, COLORREF color );
  127. void  __vf  VCD_autoPlot(   cdVector X, ui size,
  128.                             unsigned form, COLORREF color );
  129. void  __vf  VCD_2AutoPlot(  cdVector X1, ui size1,
  130.                             unsigned form1, COLORREF color1,
  131.                             cdVector X2, ui size2,
  132.                             unsigned form2, COLORREF color2 );
  133. void  __vf  VCD_dataPlot(   cdVector X, ui size,
  134.                             unsigned form, COLORREF color );
  135.  
  136. #ifdef __BORLANDC__   /* 80-bit IEEE numbers supported.
  137.                          The following lines apply
  138.                          only to Borland C++            */
  139. void  __vf  VE_xyAutoPlot(  eVector X, eVector Y, ui size,
  140.                             unsigned form, COLORREF color );
  141. void  __vf  VE_xy2AutoPlot( eVector X1, eVector Y1, ui size1,
  142.                             unsigned form1, COLORREF color1,
  143.                             eVector X2, eVector Y2, ui size2,
  144.                             unsigned form2, COLORREF color2 );
  145. void  __vf  VE_xyDataPlot(  eVector X, eVector Y, ui size,
  146.                             unsigned form, COLORREF color );
  147. void  __vf  VE_yAutoPlot(   eVector Y, ui size,
  148.                             unsigned form, COLORREF color );
  149. void  __vf  VE_y2AutoPlot(  eVector Y1, ui size1,
  150.                             unsigned form1, COLORREF color1,
  151.                             eVector Y2, ui size2,
  152.                             unsigned form2, COLORREF color2 );
  153. void  __vf  VE_yDataPlot(   eVector Y, ui size,
  154.                             unsigned form, COLORREF color );
  155. void  __vf  VCE_autoPlot(   ceVector X, ui size,
  156.                             unsigned form, COLORREF color );
  157. void  __vf  VCE_2AutoPlot(  ceVector X1, ui size1,
  158.                             unsigned form1, COLORREF color1,
  159.                             ceVector X2, ui size2,
  160.                             unsigned form2, COLORREF color2 );
  161. void  __vf  VCE_dataPlot(   ceVector X, ui size,
  162.                             unsigned form, COLORREF color );
  163.  
  164. #else   /* no 80-bit IEEE number support:
  165.      the following lines apply only to Visual C++ and Optima++ */
  166. #define VE_xyAutoPlot       VD_xyAutoPlot
  167. #define VE_xy2AutoPlot      VD_xy2AutoPlot
  168. #define VE_xyDataPlot       VD_xyDataPlot
  169. #define VE_yAutoPlot        VD_yAutoPlot
  170. #define VE_y2AutoPlot       VD_y2AutoPlot
  171. #define VE_yDataPlot        VD_yDataPlot
  172. #define VCE_autoPlot        VCD_autoPlot
  173. #define VCE_2AutoPlot       VCD_2AutoPlot
  174. #define VCE_dataPlot        VCD_dataPlot
  175.  
  176. #endif  /* 80-bit real support */
  177.  
  178. void  __vf  VBI_xyAutoPlot(  biVector X, biVector Y, ui bize,
  179.                              unsigned form, COLORREF color );
  180. void  __vf  VBI_xy2AutoPlot( biVector X1, biVector Y1, ui bize1,
  181.                              unsigned form1, COLORREF color1,
  182.                              biVector X2, biVector Y2, ui bize2,
  183.                              unsigned form2, COLORREF color2 );
  184. void  __vf  VBI_xyDataPlot(  biVector X, biVector Y, ui bize,
  185.                              unsigned form, COLORREF color );
  186. void  __vf  VBI_yAutoPlot(   biVector Y, ui bize,
  187.                              unsigned form, COLORREF color );
  188. void  __vf  VBI_y2AutoPlot(  biVector Y1, ui bize1,
  189.                              unsigned form1, COLORREF color1,
  190.                              biVector Y2, ui bize2,
  191.                              unsigned form2, COLORREF color2 );
  192. void  __vf  VBI_yDataPlot(   biVector Y, ui bize,
  193.                              unsigned form, COLORREF color );
  194.  
  195. void  __vf  VSI_xyAutoPlot(  siVector X, siVector Y, ui size,
  196.                              unsigned form, COLORREF color );
  197. void  __vf  VSI_xy2AutoPlot( siVector X1, siVector Y1, ui size1,
  198.                              unsigned form1, COLORREF color1,
  199.                              siVector X2, siVector Y2, ui size2,
  200.                              unsigned form2, COLORREF color2 );
  201. void  __vf  VSI_xyDataPlot(  siVector X, siVector Y, ui size,
  202.                              unsigned form, COLORREF color );
  203. void  __vf  VSI_yAutoPlot(   siVector Y, ui size,
  204.                              unsigned form, COLORREF color );
  205. void  __vf  VSI_y2AutoPlot(  siVector Y1, ui size1,
  206.                              unsigned form1, COLORREF color1,
  207.                              siVector Y2, ui size2,
  208.                              unsigned form2, COLORREF color2 );
  209. void  __vf  VSI_yDataPlot(   siVector Y, ui size,
  210.                              unsigned form, COLORREF color );
  211.  
  212. void  __vf  VI_xyAutoPlot(  iVector X, iVector Y, ui size,
  213.                             unsigned form, COLORREF color );
  214. void  __vf  VI_xy2AutoPlot( iVector X1, iVector Y1, ui size1,
  215.                             unsigned form1, COLORREF color1,
  216.                             iVector X2, iVector Y2, ui size2,
  217.                             unsigned form2, COLORREF color2 );
  218. void  __vf  VI_xyDataPlot(  iVector X, iVector Y, ui size,
  219.                             unsigned form, COLORREF color );
  220. void  __vf  VI_yAutoPlot(   iVector Y, ui size,
  221.                             unsigned form, COLORREF color );
  222. void  __vf  VI_y2AutoPlot(  iVector Y1, ui size1,
  223.                             unsigned form1, COLORREF color1,
  224.                             iVector Y2, ui size2,
  225.                             unsigned form2, COLORREF color2 );
  226. void  __vf  VI_yDataPlot(   iVector Y, ui size,
  227.                             unsigned form, COLORREF color );
  228.  
  229. void  __vf  VLI_xyAutoPlot(  liVector X, liVector Y, ui size,
  230.                              unsigned form, COLORREF color );
  231. void  __vf  VLI_xy2AutoPlot( liVector X1, liVector Y1, ui size1,
  232.                              unsigned form1, COLORREF color1,
  233.                              liVector X2, liVector Y2, ui size2,
  234.                              unsigned form2, COLORREF color2 );
  235. void  __vf  VLI_xyDataPlot(  liVector X, liVector Y, ui size,
  236.                              unsigned form, COLORREF color );
  237. void  __vf  VLI_yAutoPlot(   liVector Y, ui size,
  238.                              unsigned form, COLORREF color );
  239. void  __vf  VLI_y2AutoPlot(  liVector Y1, ui size1,
  240.                              unsigned form1, COLORREF color1,
  241.                              liVector Y2, ui size2,
  242.                              unsigned form2, COLORREF color2 );
  243. void  __vf  VLI_yDataPlot(   liVector Y, ui size,
  244.                              unsigned form, COLORREF color );
  245.  
  246. void  __vf  VQI_xyAutoPlot(  qiVector X, qiVector Y, ui size,
  247.                              unsigned form, COLORREF color );
  248. void  __vf  VQI_xy2AutoPlot( qiVector X1, qiVector Y1, ui size1,
  249.                              unsigned form1, COLORREF color1,
  250.                              qiVector X2, qiVector Y2, ui size2,
  251.                              unsigned form2, COLORREF color2 );
  252. void  __vf  VQI_xyDataPlot(  qiVector X, qiVector Y, ui size,
  253.                              unsigned form, COLORREF color );
  254. void  __vf  VQI_yAutoPlot(   qiVector Y, ui size,
  255.                              unsigned form, COLORREF color );
  256. void  __vf  VQI_y2AutoPlot(  qiVector Y1, ui size1,
  257.                              unsigned form1, COLORREF color1,
  258.                              qiVector Y2, ui size2,
  259.                              unsigned form2, COLORREF color2 );
  260. void  __vf  VQI_yDataPlot(   qiVector Y, ui size,
  261.                              unsigned form, COLORREF color );
  262.  
  263. void  __vf  VUB_xyAutoPlot(  ubVector X, ubVector Y, ui size,
  264.                              unsigned form, COLORREF color );
  265. void  __vf  VUB_xy2AutoPlot( ubVector X1, ubVector Y1, ui size1,
  266.                              unsigned form1, COLORREF color1,
  267.                              ubVector X2, ubVector Y2, ui size2,
  268.                              unsigned form2, COLORREF color2 );
  269. void  __vf  VUB_xyDataPlot(  ubVector X, ubVector Y, ui size,
  270.                              unsigned form, COLORREF color );
  271. void  __vf  VUB_yAutoPlot(   ubVector Y, ui size,
  272.                              unsigned form, COLORREF color );
  273. void  __vf  VUB_y2AutoPlot(  ubVector Y1, ui size1,
  274.                              unsigned form1, COLORREF color1,
  275.                              ubVector Y2, ui size2,
  276.                              unsigned form2, COLORREF color2 );
  277. void  __vf  VUB_yDataPlot(   ubVector Y, ui size,
  278.                              unsigned form, COLORREF color );
  279.  
  280. void  __vf  VUS_xyAutoPlot(  usVector X, usVector Y, ui size,
  281.                              unsigned form, COLORREF color );
  282. void  __vf  VUS_xy2AutoPlot( usVector X1, usVector Y1, ui size1,
  283.                              unsigned form1, COLORREF color1,
  284.                              usVector X2, usVector Y2, ui size2,
  285.                              unsigned form2, COLORREF color2 );
  286. void  __vf  VUS_xyDataPlot(  usVector X, usVector Y, ui size,
  287.                              unsigned form, COLORREF color );
  288. void  __vf  VUS_yAutoPlot(   usVector Y, ui size,
  289.                              unsigned form, COLORREF color );
  290. void  __vf  VUS_y2AutoPlot(  usVector Y1, ui size1,
  291.                              unsigned form1, COLORREF color1,
  292.                              usVector Y2, ui size2,
  293.                              unsigned form2, COLORREF color2 );
  294. void  __vf  VUS_yDataPlot(   usVector Y, ui size,
  295.                              unsigned form, COLORREF color );
  296.  
  297. void  __vf  VU_xyAutoPlot(  uVector X, uVector Y, ui size,
  298.                             unsigned form, COLORREF color );
  299. void  __vf  VU_xy2AutoPlot( uVector X1, uVector Y1, ui size1,
  300.                             unsigned form1, COLORREF color1,
  301.                             uVector X2, uVector Y2, ui size2,
  302.                             unsigned form2, COLORREF color2 );
  303. void  __vf  VU_xyDataPlot(  uVector X, uVector Y, ui size,
  304.                             unsigned form, COLORREF color );
  305. void  __vf  VU_yAutoPlot(   uVector Y, ui size,
  306.                             unsigned form, COLORREF color );
  307. void  __vf  VU_y2AutoPlot(  uVector Y1, ui size1,
  308.                             unsigned form1, COLORREF color1,
  309.                             uVector Y2, ui size2,
  310.                             unsigned form2, COLORREF color2 );
  311. void  __vf  VU_yDataPlot(   uVector Y, ui size,
  312.                             unsigned form, COLORREF color );
  313.  
  314. void  __vf  VUL_xyAutoPlot(  ulVector X, ulVector Y, ui size,
  315.                              unsigned form, COLORREF color );
  316. void  __vf  VUL_xy2AutoPlot( ulVector X1, ulVector Y1, ui size1,
  317.                              unsigned form1, COLORREF color1,
  318.                              ulVector X2, ulVector Y2, ui size2,
  319.                              unsigned form2, COLORREF color2 );
  320. void  __vf  VUL_xyDataPlot(  ulVector X, ulVector Y, ui size,
  321.                              unsigned form, COLORREF color );
  322. void  __vf  VUL_yAutoPlot(   ulVector Y, ui size,
  323.                              unsigned form, COLORREF color );
  324. void  __vf  VUL_y2AutoPlot(  ulVector Y1, ui size1,
  325.                              unsigned form1, COLORREF color1,
  326.                              ulVector Y2, ui size2,
  327.                              unsigned form2, COLORREF color2 );
  328. void  __vf  VUL_yDataPlot(   ulVector Y, ui size,
  329.                              unsigned form, COLORREF color );
  330.  
  331. #ifdef V_HUGE
  332.     #define VUI_xyAutoPlot    VUL_xyAutoPlot
  333.     #define VUI_xy2AutoPlot   VUL_xy2AutoPlot
  334.     #define VUI_xyDataPlot    VUL_xyDataPlot
  335.     #define VUI_yAutoPlot     VUL_yAutoPlot
  336.     #define VUI_y2AutoPlot    VUL_y2AutoPlot
  337.     #define VUI_yDataPlot     VUL_yDataPlot
  338. #else
  339.     #define VUI_xyAutoPlot    VU_xyAutoPlot
  340.     #define VUI_xy2AutoPlot   VU_xy2AutoPlot
  341.     #define VUI_xyDataPlot    VU_xyDataPlot
  342.     #define VUI_yAutoPlot     VU_yAutoPlot
  343.     #define VUI_y2AutoPlot    VU_y2AutoPlot
  344.     #define VUI_yDataPlot     VU_yDataPlot
  345. #endif
  346.  
  347. #ifdef __cplusplus
  348. }  // end of extern "C" statement
  349. #endif
  350.  
  351. /*   Plotting Styles
  352.      The linestyles defined for DOS in Borland's <graphics.h> are
  353.      translated into the appropriate MS-WINDOWS pen styles.
  354.      The other way round, MS-WINDOWS pen styles are translated
  355.      into BGI linestyles for DOS programs. */
  356.  
  357. #if defined _Windows || defined _WINDOWS
  358.    #define SOLID_LINE  PS_SOLID
  359.    #define DOTTED_LINE PS_DOT
  360.    #define CENTER_LINE PS_DASHDOT
  361.    #define DASHED_LINE PS_DASH
  362.    #define NULL_LINE   PS_NULL
  363.    /*  "USERBIT_LINE" cannot be translated */
  364. #else
  365.    #define PS_SOLID       SOLID_LINE
  366.    #define PS_DASH        DASHED_LINE
  367.    #define PS_DOT         DOTTED_LINE
  368.    #define PS_DASHDOT     CENTER_LINE
  369.    #define PS_DASHDOTDOT  USERBIT_LINE /* dahdotdot pattern set internally */
  370.    #define PS_NULL        5
  371.    #define PS_INSIDEFRAME SOLID_LINE /* not exactly */
  372.    #define NULL_LINE      5          /* missing in BGI definitions */
  373. #endif
  374. #if !defined __BORLANDC__ && !defined _MSC_VER
  375.          /* definitions for Watcom */
  376.    #define PS_SOLID       WPStyleSolid
  377.    #define PS_DASH        WPStyleDash
  378.    #define PS_DOT         WPStyleDot
  379.    #define PS_DASHDOT     WPStyleDashDot
  380.    #define PS_DASHDOTDOT  WPStyleDashDotDot
  381. #endif
  382.  
  383. /* Definition of the symbols marking the data points: */
  384.  
  385. #define SY_NULL          0
  386. #define SY_CROSS         0x0100
  387. #define SY_PLUS          0x0200
  388. #define SY_STAR          0x0300
  389. #define SY_CIRCLE        0x0400
  390. #define SY_BOX           0x0500
  391. #define SY_DIAMOND       0x0600
  392. #define SY_TRIANGLEUP    0x0700  /* upwards-pointing triangle */
  393. #define SY_TRIANGLEDOWN  0x0800  /* downwards-pointing triangle */
  394.  
  395. /* Filling of the symbols: */
  396. #define SY_HOLLOW 0
  397. #define SY_DOTTED 0x1000
  398. #define SY_FILLED 0x2000
  399.  
  400. /*   Plotting Colors
  401.      The following colors are defined for MS-WINDOWS by analogy with
  402.      the COLORS defined for DOS programs in Borland's <graphics.h>:   */
  403. #if defined _Windows || defined _WINDOWS
  404.    #define __COLORS /*  overwrite COLORS of Borland C++'s <conio.h> */
  405.    #define   BLACK        (DWORD) 0UL             /* dark colors */
  406.    #define   BLUE         (DWORD) 0x00800000UL
  407.    #define   GREEN        (DWORD) 0x00008000UL
  408.    #define   CYAN         (DWORD) 0x00808000UL
  409.    #define   RED          (DWORD) 0x000000B0UL
  410.    #define   MAGENTA      (DWORD) 0x00800080UL
  411.    #define   BROWN        (DWORD) 0x00000080UL
  412.    #define   LIGHTGRAY    (DWORD) 0x00808080UL
  413.    #define   DARKGRAY     (DWORD) 0x00B0B0B0UL   /* light colors */
  414.    #define   LIGHTBLUE    (DWORD) 0x00FF0000UL
  415.    #define   LIGHTGREEN   (DWORD) 0x0000FF00UL
  416.    #define   LIGHTCYAN    (DWORD) 0x00FFFF00UL
  417.    #define   LIGHTRED     (DWORD) 0x000000FFUL
  418.    #define   LIGHTMAGENTA (DWORD) 0x00FF00FFUL
  419.    #define   YELLOW       (DWORD) 0x0000FFFFUL
  420.    #define   WHITE        (DWORD) 0x00FFFFFFUL
  421. #endif
  422.  
  423. #endif /* __VGRAPH_H */
  424.